package cn.tedu.knows.auth.security;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.InMemoryTokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

// 一定要添加这个注解,当前类才能编写配置,否则配置不会生效
@Configuration
public class TokenConfig {
    // 向Spring容器保存一个保存令牌的策略
    // 策略有:1.保存在内存中  2.生成令牌保存在客户端
    // 生成JWT

    // 定义解析JWT的密码
    private final String SIGNING_KEY="myjwt";
    @Bean
    public TokenStore tokenStore(){
        //JwtTokenStore就不会占用内存空间了
        return  new JwtTokenStore(accessTokenConverter());
    }
    // JWT令牌转换器(将json字符串转换为JWT)
    @Bean
    public JwtAccessTokenConverter accessTokenConverter(){
        JwtAccessTokenConverter converter=
                new JwtAccessTokenConverter();
        // 设置解析口令
        converter.setSigningKey(SIGNING_KEY);
        return converter;
    }

}
